package com.atguigu.base;

import com.atguigu.util.CastUtil;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;

/**
 * @Author: 翟文海
 * @Date: 2022/10/26/026 11:43
 * @Version: 1.0
 * @Description:
 **/
public abstract class BaseServiceImpl<T>{
    
    protected abstract BaseMapper<T> getMapper();
    public List<T> findAll() {
        return getMapper().findAll();
    }

    public void insert(T t) {
        getMapper().insert(t);
    }

    public T getById(Long id) {
        return getMapper().getById(id);
    }

    public void update(T t) {
        getMapper().update(t);
    }
    public void delete(Long id) {
        getMapper().delete(id);
    }

    public PageInfo<T> findPage(Map<String, String> filters) {
        int pageNum = CastUtil.castInt(filters.get("pageNum"), 1);
        int pageSize = CastUtil.castInt(filters.get("pageSize"), 5);
        PageHelper.startPage(pageNum,pageSize);
        Page<T> Ts = getMapper().findPage(filters);
        return new PageInfo<T>(Ts);
        //什么时候使用枚举，从几个值中选一个使用枚举，不可随便修改
        //什么时候使用常量类，某默认的当前页数，可以随便设置
    }
}
